#!/usr/bin/env python3 
# -*- coding: utf-8 -*-
#-------------------------------------------------------
#	FileName	: deviation.py
#	Author		：hpy
#	Date		：2024年03月02日
#	Description	：计算相对偏差
#-------------------------------------------------------
from sys import argv
import numpy as np
import math 
#-------------------------------------------------------
#	从txt文件加载光谱数据
#   文件格式：第一列x  第二列y
#-------------------------------------------------------
def loadreadtxt(file_name):
    data = []
    file = open(file_name,'r')  #打开文件
    file_data = file.readlines() #读取所有行
    for row in file_data:
        tmp_list = row.split(' ') #按‘，’切分每行的数据
        tmp_list[-1] = tmp_list[-1].replace('\n','') #去掉换行符 \n
        # print(tmp_list)
        data.append(tmp_list) #将每行数据插入data中

    return data 


# 矩阵遍历打印到终端
def mat_traverse(mat):
    rows, cols = mat.shape              # 获取矩阵的行数和列数
    for i in range(rows):               # 按照行来遍历
        for j in range(cols):           # 对第i行进行遍历
            print(mat[i, j], end=' ')   # 输出第i行第j列元素（读）
        print("")



#  print (a[ 1 :]) #取第二行之后地所有行
#  print (a[ 0: 2 ]) #取第一行和第二行
#  print (a[:, 0: 2 ]) #取第一列和第二列
#  print (a[ 1 :, 2 :]) #取第二行和第三行的第三列


if __name__=="__main__":
    # 加载背景光谱
    back = np.mat( loadreadtxt('src/background.back') ,  dtype=np.float64 )
    spec = back[: , 0:1]
    
    # 获取光谱
    first = True 
    for arg in argv:
        if first:
            first = False
            continue

        
        # print (arg)
        # 加载能量数据
        data = np.mat( loadreadtxt(arg) ,  dtype=np.float64 )
        # 能量数据加入之前的矩阵
        spec = np.c_[spec,data[: , 1:2]]

    # 矩阵按行求最大值和最小值
    max = np.max(spec[: , 1:] ,axis=1)
    min = np.min(spec[: , 1:] ,axis=1)
    dlt = max - min 

    ave = np.average(spec[: , 1:], axis=1)

    ans = dlt/ave  
    spec = np.c_[spec[:,0],ans]
    # 按行求平均值
    # ave = np.average(spec[: , 1:], axis=1) 
    # spec = np.c_[spec,ave]
    # print(ave)
    mat_traverse(spec[: , 0:2])

    # back = np.mat( loadreadtxt('src/background.back') ,  dtype=np.float64 )
    # data = np.mat( loadreadtxt(srcfile) ,  dtype=np.float64 )
    # ans  = np.copy(back)

    # 计算透过率
    # ans[: , 1:2] =data[: , 1:2] / back[: , 1:2] * 100 

    # 计算吸光度
    # ans[: , 1:2] = np.log(back[: , 1:2] / data[: , 1:2] ) / np.log(10)

    # 设置打印所有的矩阵数据
    # np.set_printoptions(threshold=np.inf)
    # print(spec)